精通Linux系列四:基本文件操作
点击关注公众号,AI,编程干货及时送达
基本文件操作
ls | 列出目录中的文件。 |
cp | 复制文件。 |
mv | 重命名("移动")文件。 |
rm | 删除(“移除”)文件。 |
ln | 创建到文件的链接(替代名)。 |
在Linux系统上,你首先需要做的一件事就是操作文件:复制、重命名、删除等等。
ls
stdin stdout - 文件 -- 选项 --help --version
ls [选项] [文件]
ls
命令列出文件和目录的属性。你可以在当前目录下列出文件:
→ ls
在给定的目录中:
→ ls dir1 dir2 dir3
或者分别列出:
→ ls myfile myfile2 myfile3
最重要的选项是-a
、-l
和-d
。默认情况下,ls
隐藏以点开头的文件名,如侧栏[“点文件”]中解释的。-a
选项显示所有文件:
→ ls
myfile myfile2
→ ls -a
.hidden_file myfile myfile2
-l
选项产生长列表:
→ ls -l myfile
-rw-r--r-- 1 smith users 1168 Oct 28 2015 myfile
从左到右包括:文件的权限(-rw-r--r--)、硬链接的数量(1)、所有者(smith)、组(users)、大小(1168字节)、最后修改日期(Oct 28 2015)和名称。关于权限的更多信息,请参见[“文件保护”]。
-d
选项列出关于目录本身的信息,而不是深入目录列出其文件:
→ ls -ld dir1
drwxr-xr-x 1 smith users 4096 Oct 29 2015 dir1
有用的选项
-a | 列出所有文件,包括以点开头的名称。 |
-l | 长列表,包括文件属性。添加-h 选项(人类可读)以千字节、兆字节和千兆字节的形式打印文件大小,而不是字节。 |
-G | 在长列表中,不打印文件的组所有权。 |
-F | 用有意义的符号装饰某些文件名,表示它们的类型。对目录附加“/”,对可执行文件附加“*”,对符号链接附加“@”,对命名管道附加“ |
-S | 按大小排序文件。 |
-t | 按最后修改时间排序文件。 |
-r | 反转排序顺序。 |
-R | 如果列出目录,递归列出其内容。 |
-d | 如果列出目录,不列出其内容,只列出目录本身。 |
cp
stdin stdout - 文件 -- 选项 --help --version
cp [选项] 文件 (文件 | 目录)
cp
命令通常用来复制文件:
→ cp myfile anotherfile
或者将多个文件复制到一个目录(例如)mydir:
→ cp myfile myfile2 myfile3 mydir
使用-a
或-r
选项,你还可以递归复制目录。
有用的选项
-p | 复制不仅是文件的内容,还有文件的权限、时间戳,如果你有足够的权限,还可以复制所有者和组。(通常,副本将由你拥有,时间戳为现在,通过应用你的umask来设置权限。) |
-a | 递归复制目录层次结构,保留所有文件属性和链接。 |
-r | 递归复制目录层次结构。此选项不保留文件的属性,如权限和时间戳。它保留符号链接。 |
-i | 交互模式。覆盖目标文件前询问。 |
-f | 强制复制。如果目标文件存在,则无条件覆盖。 |
mv
stdin stdout - 文件 -- 选项 --help --version
mv [选项] 源文件 目标文件
mv
(移动)命令可以重命名文件:
→ mv somefile yetanotherfile
或者将文件和目录移动到目标目录:
→ mv myfile myfile2 dir1 dir2 目标目录
有用的选项
-i | 交互模式。覆盖目标文件前询问。 |
-f | 强制移动。如果目标文件存在,无条件覆盖。 |
rm
stdin stdout - 文件 -- 选项 --help --version
rm [选项] 文件 | 目录
rm
(删除)命令可以删除文件:
→ rm deleteme deleteme2
或者递归删除目录:
→ rm -r dir1 dir2
有用的选项
| -i
| 交互模式。删除每个文件前询问。| | ```- | ---- | | -f
| 强制删除,忽略任何错误或警告。| | -r
| 递归删除目录及其内容。慎用此选项,尤其是如果与-f
选项结合使用,因为它可能会擦除你的所有文件。|
ln
stdin stdout - 文件 -- 选项 --help --version
ln [选项] 源文件 目标文件
链接是对另一个文件的引用,由ln
命令创建。直观地说,链接为同一个文件提供了多个名字,使它可以在两个(或更多)位置同时存在。
有两种链接。符号链接(也称为symlink或软链接)通过其路径引用另一个文件,就像Windows的“快捷方式”或Mac OS X的“别名”。要创建符号链接,请使用-s
选项:
→ ln -s myfile mysoftlink
如果你删除原始文件,现在的悬空链接将无效,指向一个不存在的文件路径。另一方面,硬链接只是磁盘上物理文件的第二个名字(在技术上,它指向同一个inode)。如果你删除原始文件,链接仍然有效。[图5]说明了区别。要创建硬链接,输入:
→ ln myfile myhardlink
图5. 硬链接与符号链接
符号链接可以指向其他磁盘分区上的文件,因为它们只是对文件路径的引用;硬链接不能,因为一个磁盘上的inode在另一个磁盘上没有意义。符号链接也可以指向目录,而硬链接不能...除非你是超级用户并使用-d
选项。
有用的选项
| -s
| 创建符号链接,而不是硬链接。| | ```- | ------ | | -i
| 交互模式。覆盖目标文件前询问。| | -f
| 强制链接。如果目标文件存在,无条件覆盖。| | -d
| 创建到目录的硬链接(仅限超级用户)。|
要查找符号链接指向何处,运行以下任何一个命令,它们显示链接examplelink指向文件myfile:
→ readlink examplelink
myfile
→ ls -l examplelink
lrwxrwxrwx 1 smith ... examplelink -> myfile
符号链接可以指向其他符号链接。要追踪整个链接链,找出它们最终指向何处,使用readlink -f
。
推荐阅读
你好,我是拾叁,7年开发老司机、互联网两年外企5年。怼得过阿三老美,也被PR comments搞崩溃过。这些年我打过工,创过业,接过私活,也混过upwork。赚过钱也亏过钱。一路过来,给我最深的感受就是不管学什么,一定要不断学习。只要你能坚持下来,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯和编程知识,帮你积累弯道超车的资本。